public class PlayerIdleState : PlayerGroundState
{
    public PlayerIdleState(Player player, PlayerSM stateMachine, PlayerData playerData, string animBoolName, Core core)
        : base(player, stateMachine, playerData, animBoolName, core)
    {
    }

    public override void DoChecks()
    {
        base.DoChecks();
    }

    public override void Enter()
    {
        base.Enter();
        _core.Movement.SetVelocityX(0f);
    }

    public override void Exit()
    {
        base.Exit();
    }

    public override void LogicUpdate()
    {
        base.LogicUpdate();
        if (!_isExitingState)
        {
            if (_inputX != 0)
                _stateMachine.ChangeState(_player.MoveState);
            else if (_inputY < 0) _stateMachine.ChangeState(_player.CrouchIdleState);
        }
    }

    public override void PhysicsUpdate()
    {
        base.PhysicsUpdate();
    }
}